package main

import (
	"fmt"
)

type Usb interface{
	Start()
	Stop()
}

type Phone struct{
	Name string 
}
type Camera struct{
	Name string 
}

func (p Phone)Start(){
	fmt.Println(p.Name+"开始工作")
}
func (p Phone)Stop(){
	fmt.Println(p.Name+"停止 工作")
}

func (p Phone)Call(){
	fmt.Println(p.Name+"打电话")
}

func (c Camera)Start(){
	fmt.Println(c.Name+"开始工作")
}

func (c Camera)Stop(){
	fmt.Println(c.Name+"停止工作")
}

type Computer struct{

}

func (c Computer)Working(usb Usb){

	usb.Start()
	//类型断言  usb类型尝试转换为phone类型，成功就调用
	if phone,ok:=usb.(Phone);ok==true{
		phone.Call()
	}
	usb.Stop()
}

func main(){


	var usbArr [3]Usb
	usbArr[0]=Phone{"苹果"}
	usbArr[1]=Phone{"华为"}
	usbArr[2]=Camera{"索尼"}

	fmt.Println(usbArr)
	var c Computer
	for _,v:=range usbArr{

		c.Working(v)

	}
}